package procilege.impl;

import procilege.Procilege;
import procilege.compute.ExprEvaluation;
import procilege.compute.ExprExpand;
import procilege.compute.ExprFormatter;
import procilege.impl.eval.ExprEvaluationImpl;
import procilege.impl.expand.ExprExpandImpl;
import procilege.impl.formatter.ExprFormatterImpl;
import procilege.lang.PrivilegeFormAnalysis;

import com.google.inject.AbstractModule;
import com.google.inject.Scopes;

public class DefaultProcilegeModule extends AbstractModule {

	public void configure() {

		bind(Procilege.class).to(ProcilegeImpl.class) //
				.in(Scopes.SINGLETON);

		bind(PrivilegeFormAnalysis.class).to(PrivFormAnalysisImpl.class) //
				.in(Scopes.SINGLETON);

		bind(ExprEvaluation.class).to(ExprEvaluationImpl.class) //
				.in(Scopes.SINGLETON);
		bind(ExprFormatter.class).to(ExprFormatterImpl.class) //
				.in(Scopes.SINGLETON);
		bind(ExprExpand.class).to(ExprExpandImpl.class) //
				.in(Scopes.SINGLETON);
	}
}
